#include<stdio.h>
//用函数实现整型有序数据的二分查找
int binary_search(int arr[],int k,int sz){
	int left=1;
	int right=sz-1;
	while(left<=right){
		int mid=left+(right-left)/2;//mid刷新，防止溢出 
	 	if(arr[mid]<k){
			left=mid+1;
		}
		else if(arr[mid]>k){
			right=mid-1;
		}
		else{
			return mid;//找到了
		}
	}
	return -1;//未找到 
}
int main(){
	int arr[]={1,2,3,4,5,6,7,8,9,10};
	int k=8;
	int sz=sizeof(arr)/sizeof(arr[0]);
	//不妨假定，若找到，返回下标；若未找到，返回-1（防止下标歧义）
    //数组传参，实际上是传递的是数组首元素的地址，故在函数内部计算函数参数部分的数组的元素个数是不靠谱的
    //arr看上去是数组，本质是指针变量
	int return_num=binary_search(arr,k,sz);
	if(return_num==-1){
		printf("未找到\n");
	}
	else{
		printf("找到了，下标为%d\n",return_num);
	}
	return 0;
}
